//package com.xqboss.chain.bsn;
//
//
//import com.alibaba.fastjson2.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.httpclient.HttpClient;
//import org.apache.commons.httpclient.methods.PostMethod;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import java.math.BigInteger;
//
//@Slf4j
//@Component
//public class OpenApiUtil {
//
//    @Value("${custom.nft.voucher}")
//    String voucher;
//
//    @Value("${custom.nft.apitoken}")
//    String apitoken;
//
//    //联盟链的id,武汉链就是4
//    public final static int opbChainId = 4;
//    /**
//     * 创建链账户
//     */
//    public final static String API_CREATE_ACCOUNT = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/opb/account/create/save";
//
//    /**
//     * 将账户接入官方DDC
//     */
//    public final static String API_OFFICIAL_ACCOUNT = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/opb/account/access/official/save";
//
//    /**
//     * 能量值充值
//     */
//    public final static String API_GAS_ACCOUNT_SAVE = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/opb/account/gas/save";
//
//    /**
//     * 业务费充值
//     */
//    public final static String API_BUSINESS_ACCOUNT_SAVE = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/opb/account/business/save";
//
//    /**
//     * 查询官方DDC
//     */
//    public final static String API_COST_SEARCHES = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/opb/free/business/cost/searches";
//
//    /**
//     * 通过用户标识或者ddcid查询官方DDC交易记录
//     */
//    public final static String API_All_SEARCHES = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/ddcsearch/ddc/searches";
//
//    /**
//     * 通过用户标识和ddcid查询官方DDC交易记录
//     */
//    public final static String API_PRECISE_SEARCHES = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/ddcsearch/ddcprecise/search";
//
//
//    /**
//     * 查询ddc流转记录
//     */
//    public final static String API_DEAL_SEARCHES = "https://openapi-ddc.bsnbase.com/ddcoai/sys/v1/ddcsearch/transfer/searches";
//
//
//
//
//    public ResultInfo apiCreateAccount(String opbChainClientName, String opbClientAddress, String opbPublicKey){
//        JSONObject httpJson = new JSONObject();
//        httpJson.put("opbChainClientName", opbChainClientName);//链账户名称自己定义，同一账户下不可以重复，可以和业务系统里的用户信息相关联
//        httpJson.put("opbChainClientType", 2);//平台方账户为 1，终端账户为 2
//        httpJson.put("opbChainId", opbChainId);//武汉链OPBChainID
//        httpJson.put("opbClientAddress", opbClientAddress);//上传链账户地址模式必填
//        httpJson.put("opbPublicKey", opbPublicKey);//上传公钥模式必填
//        httpJson.put("openDdc", 5);//开通官方DDC合约需填写5
//        httpJson.put("opbKeyType", 3);//上传链账户地址模式
//        httpJson.put("proof", voucher);//将3.2下载的业务凭证进行转义，将【"】转成【\"】
//        try {
//            String result = urlPost(API_CREATE_ACCOUNT, httpJson.toJSONString());
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            if(result != null && result.contains("MSG_10021010")){
//                return apiCreateAccount(opbChainClientName.substring(0, opbChainClientName.length() - 1), opbClientAddress, opbPublicKey);
//            }
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//    public ResultInfo apiOfficialAccount(String opbClientAddress){
//        JSONObject httpJson = new JSONObject();
//        httpJson.put("opbChainClientAddress", opbClientAddress);//链账户地址
//        httpJson.put("opbChainClientType", 2);//用户类型(1=平台方 2=平台方的用户)
//        httpJson.put("opbChainId", opbChainId);//开放联盟链框架
//        httpJson.put("proof", voucher);
//        try {
//            String result = urlPost(API_OFFICIAL_ACCOUNT, httpJson.toJSONString());
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//    /**
//     *
//     * @param opbChainClientAddress DDC链账户地
//     * @param businessMoney 充值GAS金额
//     * @param reqTransactionSn 第三方流水号(数字字母下划线组成)
//     * @return
//     */
//    public ResultInfo apiGasAccountSave(String opbChainClientAddress, BigInteger businessMoney, String reqTransactionSn){
//        JSONObject httpJson = new JSONObject();
//        httpJson.put("opbChainClientAddress", opbChainClientAddress);//链账户地址
//        httpJson.put("businessMoney", businessMoney);
//        httpJson.put("opbChainId", opbChainId);//开放联盟链框架
//        httpJson.put("reqTransactionSn", reqTransactionSn);//第三方流水号(数字字母下划线组成)
//        httpJson.put("proof", voucher);
//        try {
//            String result = urlPost(API_GAS_ACCOUNT_SAVE, httpJson.toJSONString());
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//    /**
//     *
//     * @param pageNum 页数
//     * @param pageSize 每页数量
//     * @return
//     */
//    public ResultInfo apiDdcSearches(Integer pageNum, Integer pageSize){
//        JSONObject httpJson = new JSONObject();
//        JSONObject data = new JSONObject();
//        JSONObject page = new JSONObject();
//        page.put("pageNum", pageNum);//页数
//        page.put("pageSize", pageSize);//每页数量
//        httpJson.put("data",data);
//        httpJson.put("page",page);
//        try {
//            String result = urlPost(API_COST_SEARCHES, httpJson.toJSONString());
//            System.out.println(result);
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//
//    /**
//     *  查询所有ddc所有记录或者当前用户下的所有记录
//     * @param pageNum 页数
//     * @param pageSize 每页数量
//     * @param ddcIdOrDdcOwner ddcid或者用户邮箱
//     * @return
//     */
//    public ResultInfo apiDdcSearchesAll(Integer pageNum, Integer pageSize, String ddcIdOrDdcOwner){
//        JSONObject httpJson = new JSONObject();
//        JSONObject data = new JSONObject();
//        JSONObject page = new JSONObject();
//        page.put("pageNum", pageNum);//页数
//        page.put("pageSize", pageSize);//每页数量
//        data.put("ddcIdOrDdcOwner", ddcIdOrDdcOwner);//ddcId或者拥有者
//        data.put("ddcType", 1155);//ddc类型，这里只有一种1155
//        data.put("opbChainId", opbChainId);//开放联盟框架id
//        httpJson.put("data",data);
//        httpJson.put("page",page);
//        try {
//            String result = urlPost(API_All_SEARCHES, httpJson.toJSONString());
//            System.out.println(result);
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//
//    /**
//     *  查询ddc的所有流转记录
//     * @param pageNum 页数
//     * @param pageSize 每页数量
//     * @param ddcId ddcid
//     * @return
//     */
//    public ResultInfo apiDealSearches(Integer pageNum, Integer pageSize, String ddcId){
//        JSONObject httpJson = new JSONObject();
//        JSONObject data = new JSONObject();
//        JSONObject page = new JSONObject();
//        page.put("pageNum", pageNum);//页数
//        page.put("pageSize", pageSize);//每页数量
//        data.put("ddcId", ddcId);//ddcId或者拥有者
//        data.put("ddcType", 1155);//ddc类型，这里只有一种1155
//        data.put("opbChainId", opbChainId);//开放联盟框架id
//        httpJson.put("data",data);
//        httpJson.put("page",page);
//        try {
//            String result = urlPost(API_DEAL_SEARCHES, httpJson.toJSONString());
//            System.out.println(result);
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//    /**
//     *  官方DDC业务费明细
//     * @param pageNum 页数
//     * @param pageSize 每页数量
//     * @return
//     */
//    public ResultInfo apiBusinessMoneySearches(Integer pageNum, Integer pageSize){
//        JSONObject httpJson = new JSONObject();
//        JSONObject data = new JSONObject();
//        JSONObject page = new JSONObject();
//        page.put("pageNum", pageNum);//页数
//        page.put("pageSize", pageSize);//每页数量
//        httpJson.put("data",data);
//        httpJson.put("page",page);
//        try {
//            String result = urlPost(API_DEAL_SEARCHES, httpJson.toJSONString());
//            System.out.println(result);
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            return resultInfo;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
//
////    /**
////     *  精确查询ddc
////     * @param ddcId ddcid
////     * @param ddcOwner 用户账户，email
////     * @returna
////     */
////    public ResultInfo apiPreciseSearch(String ddcId, String ddcOwner){
////        JSONObject httpJson = new JSONObject();
////
////        httpJson.put("ddcId",ddcId);
////        httpJson.put("ddcOwner",ddcOwner);
////        httpJson.put("ddcType",1155);
////        httpJson.put("opbChainId",opbChainId);
////        try {
////            String result = urlPost(API_PRECISE_SEARCHES, httpJson.toJSONString());
////            System.out.println(result);
////            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
////            return resultInfo;
////        } catch (Exception e) {
////            e.printStackTrace();
////            log.error(e.getMessage());
////        }
////        return null;
////    }
//
//
//
//
//
//
//    public String business() {
//        JSONObject httpJson = new JSONObject();
//        httpJson.put("opbChainClientAddress", "0x5e0c22910ed70443e50598b6a8d04bc413b27cf4");//链账户地址
////        httpJson.put("businessMoney", 10 * 100);
//        httpJson.put("opbChainId", opbChainId);//开放联盟链框架
//        httpJson.put("reqTransactionSn", "698b6a8d04bc413b27cf4_" + (char)('a' + Math.random()*('z'-'a'-1)));//第三方流水号(数字字母下划线组成)
//        httpJson.put("proof", voucher);
//        try {
//            String result = urlPost(API_BUSINESS_ACCOUNT_SAVE, httpJson.toJSONString());
//            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
//            System.out.println(resultInfo);
//            return JSONObject.toJSONString(resultInfo);
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error(e.getMessage());
//        }
//        return null;
//    }
//
////    public ResultInfo apiOfficialAccount1(String opbClientAddress){
////        JSONObject httpJson = new JSONObject();
////        httpJson.put("opbChainClientAddress", opbClientAddress);//链账户地址
////        httpJson.put("opbChainClientType", 2);//用户类型(1=平台方 2=平台方的用户)
////        httpJson.put("opbChainId", opbChainId);//开放联盟链框架
////        httpJson.put("proof", voucher);
////        try {
////            String result = urlPost(API_OFFICIAL_ACCOUNT, httpJson.toJSONString());
////            ResultInfo resultInfo = JSONObject.parseObject(result, ResultInfo.class);
////            return resultInfo;
////        } catch (Exception e) {
////            e.printStackTrace();
////            log.error(e.getMessage());
////        }
////        return null;
////    }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//    public String urlPost(String url, String postBody) throws Exception
//    {
//        PostMethod post = new PostMethod(url);
//        HttpClient httpClient = new HttpClient();
//        post.addRequestHeader("apitoken", apitoken);
//        post.getParams().setContentCharset("utf-8");
//        post.setRequestBody(postBody);
//        post.setRequestHeader("Content-Type", "application/json");
//        httpClient.executeMethod(post);
//        return post.getResponseBodyAsString();
//    }
//
//}
